package com.woniu.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.woniu.client.dto.AccountDto;
import com.woniu.client.dto.JunkTypeDto;
import com.woniu.client.dto.OrderDto;
import com.woniu.model.Station;
import com.woniu.service.param.*;
import com.baomidou.mybatisplus.extension.service.IService;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.List;

/**
 * <p>
 *  站点服务类
 * </p>
 *
 * @author 吴彦祖
 * @since 2024年05月23日
 */
public interface StationService extends IService<Station> {

    /**
     * 添加站点
     *
     * @param param 参数对象，包含站点的详细信息
     */
    void add(AddStationParam param);

    /**
     * 删除站点
     *
     * @param id 站点ID
     */
    void del(Integer id);

    /**
     * 修改站点信息
     *
     * @param param 参数对象，包含站点的详细信息
     */
    void modify(ModifyStationParam param);

    /**
     * 修改站点信息（不涉及图片）
     *
     * @param param 参数对象，包含站点的详细信息
     */
    void modify2(ModifyStation2Param param);
    /**
     * 根据位置查找最近的站点
     *
     * @param param 参数对象，包含用户的经纬度
     * @return 最近的站点
     */
    Station findByLocation(FindByLocationParam param);

    /**
     * 根据位置和垃圾种类查找最近的站点
     *
     * @param param 参数对象，包含用户的经纬度和垃圾种类ID
     * @return 最近的站点
     */
    Station findByLocationAndJunk(FindByLocationAndJunkParam param);

    /**
     * 加载所有站点page
     * 参数 分页参数
     */
    Page<Station> loadAll(Integer pageNum, Integer pageSize);

    /**
     * 更改站点负责人
     * id 新负责人id
     */
    void changeHandler(Integer newHandlerId,Integer stationId) throws Exception;

    void changeState(Integer id);

    Integer findBossByStationId(Integer id);

    Page<OrderDto> findUnHandelOrderByStationId(Integer id);

    Page<OrderDto> findOrderByStationId(Integer id, Integer pageNum,Integer pageSize);
}
